﻿using Shinva.Variables.Interface;
using Shinva.Variables.Type.bit;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Shinva.LADModel.Abstractions
{
    public enum NodeType
    {
        //元件节点
        ElementNode,
        //路径
        PathNode,
        //虚节点
        VirtualNode,
        //数据指针
        DataPointer,
        //网络节点
        NetNode,
        //线
        Wire
    }
    /// <summary>
    /// 所有节点的抽象，可以表示元器件节点、母线节点、路径节点等
    /// </summary>
    public interface INode
    {

        /// <summary>
        /// 节点的唯一标识符
        /// </summary>
        int Id { get; set; }

        /// <summary>
        /// 当前节点的类型，路径节点或者元器件节点
        /// </summary>
        NodeType NodeType { get; set; }

        /// <summary>
        /// 图元节点中使用，连接到下一个节点
        /// </summary>
        /// <param name="node">要连接到的节点</param>
        /// <param name="FromName">本节点连接属性名</param>
        /// <param name="ToName">要连接到节点的属性名</param>

        //void Connect(INode node, string FromName, string ToName);

        /// <summary>
        /// 图元节点使用，根据属性名字，获取接口变量
        /// </summary>
        /// <param name="name">属性名</param>
        /// <returns></returns>
        //IPlcMember GetInterfaceVariableByName(string name);

    }
}
